package com.wing.res.model.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 基准书
 *
 * @author xiayang
 */
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@TableName("res_benchmark_book")
public class  BenchmarkBook implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @JsonSerialize(using= ToStringSerializer.class)
    @TableId(type = IdType.AUTO)
    public Long id;

    /**
     * 研发任务ID
     */
    private Long resTaskId;

    /**
     * 工艺工序模板
     */
    private Long templateId;

    /**
     * 基准书编号
     */
    private String code;

    /**
     * 基准书类型
     */
    private String bookType;

    /**
     * 基准书类型类型
     */
    @TableField(exist = false)
    private String typeName;

    /**
     * SKU编码
     */
    private String skuCode;

    /**
     * SKU名称
     */
    private String skuName;

    /**
     * SKU规格码
     */
    private String skuSpec;

    /**
     * 基准书来源
     */
    private String source;

    /**
     * 基准书来源名称
     */
    @TableField(exist = false)
    private String sourceName;

    /**
     * 产品类别
     */
    private Long productType;

    /**
     * 物料id
     */
    private Long productDetailId;

    /**
     * 产品类别名称
     */
    @TableField(exist = false)
    private String productTypeName;

    /**
     * 产品性质
     */
    private String materialNature;

    /**
     * 产品性质名称
     */
    @TableField(exist = false)
    private String materialNatureName;

    /**
     * 产品属性
     */
    private String productAttr;

    /**
     * 产品属性名称
     */
    @TableField(exist = false)
    private String productAttrName;

    /**
     * 编制人
     */
    private Long makePerson;

    /**
     * 编制人名称
     */
    @TableField(exist = false)
    private String makePersonName;

    /**
     * 校准人
     */
    private Long adjustPerson;
    /**
     * 校准时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime adjustTime;

    /**
     * 校准人名称
     */
    @TableField(exist = false)
    private String adjustPersonName;

    /**
     * 审核人
     */
    private Long auditPerson;

    /**
     * 审核时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime auditTime;

    /**
     * 审核人名称
     */
    @TableField(exist = false)
    private String auditPersonName;

    /**
     * 模版图纸备注
     */
    private String drawMoldRemark;

    /**
     * 批准人
     */
    private Long authorizePerson;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime authorizeTime;

    /**
     * 状态
     */
    private String status;

    /**
     * 状态名称
     */
    @TableField(exist = false)
    private String statusName;

    /**
     * 批准定型人名称
     */
    @TableField(exist = false)
    private String authorizePersonName;


    /**
     * 批准定型人名称
     */
    @TableField(exist = false)
    private String isBom;


    /**
     * 批准定型人名称
     */
    @TableField(exist = false)
    private String isProcess;


    /**
     * 批准定型人名称
     */
    @TableField(exist = false)
    private String isQuality;

    /**
     * 备注
     */
    private String remark;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;


    /**
     * 是否关联模具图纸
     */
    private String isRelevance;

    /**
     * 模具图纸
     */
    private String drawMoldName;

    /**
     * 模具图纸地址
     */
    private String drawMoldUrl;

    /**
     * 版本区间
     */
    private String versionInterval;

}
